package com.hllxd.hism.star.basic.service.dao.mapper.mis;

import com.hllxd.hism.star.basic.service.model.dapan.QuotaEntity;
import com.hllxd.hism.star.basic.service.model.metric.MetricDefineEntity;
import com.hllxd.hism.star.basic.service.model.UserFocusMetricEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 指标管理
 *
 * @author xiyong.lxy
 * @date 2021/6/15 18:15
 */

@Mapper
public interface MetricDefineMapper {

    /**
     * 获取指标列表 以及 系列列表
     *
     * @param dt     开始时间
     * @param dt2    结束时间
     * @param biz    业务标识 [zp,ganji,chinahr]
     * @param metaId 指标Id
     * @return 实体信息
     */
    List<MetricDefineEntity> list4DapanSeries3(@Param("dt") String dt, @Param("dt2") String dt2, @Param("biz") String biz,
                                              @Param("metaId") String metaId);

    List<QuotaEntity> listMetric4Series(@Param("appDiv") String appDiv);

    List<QuotaEntity> listMetric4DapanByDiv(
            @Param("dt") String dt, @Param("dt2") String dt2,
            @Param("biz") String biz,
            @Param("appDiv") String appDiv,
            @Param("zgroup") String zgroup, @Param("zlevel") Integer zlevel, @Param("platform") String platform);

    /**
     * 获取指标列表信息
     * @param bizArea 业务板块
     * @return 实体信息
     */
    List<MetricDefineEntity> listMetricRouter(@Param("bizArea") String bizArea);

    /**
     * 获取指标列表信息
     *
     * @param bizArea 业务板块
     * @return 实体信息
     */
    List<MetricDefineEntity> listMetric(@Param("bizArea") String bizArea, @Param("topic") String topic);

    /**
     * 获取指标列表信息
     *
     * @param bizArea 业务板块
     * @param search 搜索词
     * @return 实体信息
     */
    List<MetricDefineEntity> searchMetric(@Param("bizArea") String bizArea, @Param("search") String search);


    /**
     * 获取指标信息
     *
     * @param id 记录ID
     * @return 实体信息
     */
    MetricDefineEntity getMetric(@Param("id") Long id);

    /**
     * 获取指标列表信息
     *
     * @param entity 记录
     * @return 写入记录数
     */
    Long insertMetric(MetricDefineEntity entity);

    /**
     * 更新指标信息
     *
     * @param entity 记录
     * @return 更新记录数
     */
    Long updateMetric(MetricDefineEntity entity);

    /**
     * 获取指标列表信息
     *
     * @param ids 记录ID类别
     * @return 成功失败
     */
    Boolean deleteMetric(@Param("ids") String ids);

    /**
     * 用户关注指标
     * @param userId 用户id
     * @param metricId 指标id
     * @return 主键
     */
    long insertUserFocusMetric(@Param("userId") String userId, @Param("metricId") long metricId);

    long deleteUserFocusMetric(@Param("userId") String userId, @Param("metricId") long metricId);

    List<UserFocusMetricEntity> selectUserSubscribeByUserId(@Param("userId") String userID);
}
